export default function initStaticData() {
  // 如果_doc下没有cable文件夹需要从static中拷贝cable.zip文件并解压
  return new Promise((resolve, reject) => {
    plus.io.resolveLocalFileSystemURL(
      '_doc/cable/cable.db',
      function () {
        //已经有cable文件夹
        console.log('initStaticData: 获取cable文件夹成功，不用再拷贝')
        resolve()
      },
      function (e) {
        if (e.code !== 14) {
          console.log('initStaticData: 读取cable文件夹错误：', e)
          reject(e)
          return
        }

        // 需要拷贝
        // 先查看cable.zip是否已经存在
        plus.io.resolveLocalFileSystemURL(
          '_doc/cable.zip',
          function () {
            console.log('zip文件已经存在，无需拷贝')
            // 解压
            decompress()
              .then(() => {
                resolve()
              })
              .catch((e) => {
                reject(e)
              })
          },
          function () {
            console.log('zip文件不存在，需要拷贝')
            plus.io.resolveLocalFileSystemURL(
              '_www/static/cable.zip',
              function (entry) {
                // 拷贝zip文件
                plus.io.resolveLocalFileSystemURL('_doc', function (root) {
                  entry.copyTo(
                    root,
                    'cable.zip',
                    function (entryCode) {
                      decompress()
                        .then(() => {
                          resolve(entryCode)
                        })
                        .catch((e) => {
                          reject(e)
                        })
                    },
                    function (e) {
                      // 拷贝失败是因为之前已经拷过了，文件名被占用
                      console.error('zip文件拷贝失败:', e)
                    }
                  )
                })
              },
              function (e) {
                console.error(
                  '读取static文件夹下的cable.zip失败，失败原因：',
                  e
                )
                reject(e)
              }
            )
          }
        )
      }
    )
  })
}

function decompress() {
  return new Promise((resolve, reject) => {
    return plus.zip.decompress(
      '_doc/cable.zip',
      '_doc/cable/',
      () => {
        console.log('initStaticData：zip文件解压成功')
        resolve()
      },
      (error) => {
        console.error('initStaticData zip解压失败:', error)
        reject(error)
      }
    )
  })
}
